﻿using Microsoft.Extensions.Logging;
using Xunit;

namespace Unity.Logger.Tests
{
    public class FormatArgumentsTest
    {
        [Fact]
        public void CheckFormatArguments()
        {
            var loggerFactory = LoggerFactory.Create(x =>
            {
                x.SetMinimumLevel(LogLevel.Debug);
            });

            var logger = loggerFactory.CreateLogger("mytest");

            logger.UnityLogTrace("{}", 1);
            logger.UnityLogTrace("{} {}", 1, 2);
            logger.UnityLogTrace("{} {} {}", 1, 2, 3);
            logger.UnityLogTrace("{} {} {} {}", 1, 2, 3, 4);
            logger.UnityLogTrace("{} {} {} {} {}", 1, 2, 3, 4, 5);
            logger.UnityLogTrace("{} {} {} {} {} {}", 1, 2, 3, 4, 5, 6);
            logger.UnityLogTrace("{} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
            logger.UnityLogTrace("{} {} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
            logger.UnityLogDebug("{}", 1);
            logger.UnityLogDebug("{} {}", 1, 2);
            logger.UnityLogDebug("{} {} {}", 1, 2, 3);
            logger.UnityLogDebug("{} {} {} {}", 1, 2, 3, 4);
            logger.UnityLogDebug("{} {} {} {} {}", 1, 2, 3, 4, 5);
            logger.UnityLogDebug("{} {} {} {} {} {}", 1, 2, 3, 4, 5, 6);
            logger.UnityLogDebug("{} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
            logger.UnityLogDebug("{} {} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
            logger.UnityLogInformation("{}", 1);
            logger.UnityLogInformation("{} {}", 1, 2);
            logger.UnityLogInformation("{} {} {}", 1, 2, 3);
            logger.UnityLogInformation("{} {} {} {}", 1, 2, 3, 4);
            logger.UnityLogInformation("{} {} {} {} {}", 1, 2, 3, 4, 5);
            logger.UnityLogInformation("{} {} {} {} {} {}", 1, 2, 3, 4, 5, 6);
            logger.UnityLogInformation("{} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
            logger.UnityLogInformation("{} {} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
            logger.UnityLogWarning("{}", 1);
            logger.UnityLogWarning("{} {}", 1, 2);
            logger.UnityLogWarning("{} {} {}", 1, 2, 3);
            logger.UnityLogWarning("{} {} {} {}", 1, 2, 3, 4);
            logger.UnityLogWarning("{} {} {} {} {}", 1, 2, 3, 4, 5);
            logger.UnityLogWarning("{} {} {} {} {} {}", 1, 2, 3, 4, 5, 6);
            logger.UnityLogWarning("{} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
            logger.UnityLogWarning("{} {} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
            logger.UnityLogError("{}", 1);
            logger.UnityLogError("{} {}", 1, 2);
            logger.UnityLogError("{} {} {}", 1, 2, 3);
            logger.UnityLogError("{} {} {} {}", 1, 2, 3, 4);
            logger.UnityLogError("{} {} {} {} {}", 1, 2, 3, 4, 5);
            logger.UnityLogError("{} {} {} {} {} {}", 1, 2, 3, 4, 5, 6);
            logger.UnityLogError("{} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7);
            logger.UnityLogError("{} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
            logger.UnityLogError("{} {} {} {} {} {} {} {} {} {} {} {} {} {}", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
        }
    }
}
